home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xa / InstanceDocDialog.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  6.9 KB  |  241 lines

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.app.UI;
  4. import com.extensibility.rock.AutoCompleteDocument;
  5. import com.extensibility.rock.RDialog;
  6. import com.extensibility.rock.Screen;
  7. import com.extensibility.util.Debug;
  8. import com.extensibility.xml.BaseDeclaration;
  9. import com.extensibility.xml.ElementDeclaration;
  10. import java.awt.BorderLayout;
  11. import java.awt.Container;
  12. import java.awt.Dialog;
  13. import java.awt.FlowLayout;
  14. import java.awt.Font;
  15. import java.awt.Frame;
  16. import java.awt.GridBagConstraints;
  17. import java.awt.GridBagLayout;
  18. import java.awt.Insets;
  19. import java.awt.Window;
  20. import java.util.Enumeration;
  21. import java.util.Vector;
  22. import javax.swing.BorderFactory;
  23. import javax.swing.Icon;
  24. import javax.swing.JButton;
  25. import javax.swing.JComponent;
  26. import javax.swing.JDialog;
  27. import javax.swing.JLabel;
  28. import javax.swing.JPanel;
  29. import javax.swing.JScrollPane;
  30. import javax.swing.JTextArea;
  31. import javax.swing.JTextField;
  32. import javax.swing.UIManager;
  33. import javax.swing.border.CompoundBorder;
  34. import javax.swing.border.EmptyBorder;
  35.  
  36. public class InstanceDocDialog extends RDialog {
  37.    static final int CANCEL_BUTTON = 1;
  38.    static final int OK_BUTTON = 0;
  39.    JLabel art;
  40.    JTextArea message = UI.createTextArea(false);
  41.    JTextField[] options;
  42.    JLabel[] label;
  43.    JButton[] button;
  44.    int dismissalBtn = -1;
  45.    Vector declsToEdit;
  46.  
  47.    public InstanceDocDialog(Frame var1, Vector var2) {
  48.       super(var1, true);
  49.       ((Dialog)this).setTitle(UI.getString("dialog.instancedoc.title"));
  50.       this.prepare(UIManager.getIcon("itydoc.gif"), UI.getString("dialog.instance.message"), new String[]{UI.getString("dialog.ok"), UI.getString("dialog.cancel")}, var2);
  51.    }
  52.  
  53.    protected int getTextFieldCount() {
  54.       int var1 = 0;
  55.  
  56.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  57.          ++var1;
  58.       }
  59.  
  60.       return var1;
  61.    }
  62.  
  63.    protected JTextField getTextField(int var1) {
  64.       return var1 < this.options.length ? this.options[var1] : null;
  65.    }
  66.  
  67.    public String getField(int var1) {
  68.       return this.getTextField(var1) == null ? null : this.getTextField(var1).getText();
  69.    }
  70.  
  71.    public Vector getValues() {
  72.       Vector var1 = new Vector();
  73.  
  74.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  75.          var1.addElement(this.getField(var2));
  76.       }
  77.  
  78.       return var1;
  79.    }
  80.  
  81.    public void setAutoComplete(int var1, Enumeration var2) {
  82.       JTextField var3 = this.getTextField(var1);
  83.       AutoCompleteDocument var4 = new AutoCompleteDocument(var3, var2);
  84.       this.getTextField(var1).setDocument(var4);
  85.    }
  86.  
  87.    public int getDismissalButton() {
  88.       return this.dismissalBtn;
  89.    }
  90.  
  91.    protected int getOptionsLength() {
  92.       return this.options != null ? this.options.length : -1;
  93.    }
  94.  
  95.    protected int getOptionsGridHeight() {
  96.       int var1 = 0;
  97.  
  98.       for(int var2 = 0; var2 < this.options.length; ++var2) {
  99.          ++var1;
  100.       }
  101.  
  102.       return var1;
  103.    }
  104.  
  105.    protected void prepare(Icon var1, String var2, String[] var3, Vector var4) {
  106.       this.declsToEdit = var4;
  107.       Font var5 = (new JLabel()).getFont();
  108.       int var6 = this.declsToEdit.size();
  109.       this.label = new JLabel[var6];
  110.  
  111.       for(int var7 = 0; var7 < var6; ++var7) {
  112.          BaseDeclaration var8 = (BaseDeclaration)this.declsToEdit.elementAt(var7);
  113.          this.label[var7] = new JLabel(var8.getName());
  114.          if (var8 instanceof ElementDeclaration) {
  115.             this.label[var7].setFont(new Font(var5.getName(), 1, var5.getSize()));
  116.          }
  117.       }
  118.  
  119.       this.options = new JTextField[var6];
  120.  
  121.       for(int var17 = 0; var17 < var6; ++var17) {
  122.          String var9 = ((BaseDeclaration)this.declsToEdit.elementAt(var17)).getSampleData();
  123.          if (var9 == null) {
  124.             this.options[var17] = null;
  125.          } else {
  126.             this.options[var17] = UI.createTextField(var9);
  127.          }
  128.       }
  129.  
  130.       int var18 = var3.length;
  131.  
  132.       while(var18 > 0) {
  133.          --var18;
  134.          if (var3[var18] != null) {
  135.             break;
  136.          }
  137.       }
  138.  
  139.       ++var18;
  140.       this.button = new JButton[var18];
  141.  
  142.       for(int var10 = 0; var10 < var18; ++var10) {
  143.          this.button[var10] = new JButton(var3[var10]);
  144.          this.button[var10].addActionListener(new 1(var10, this));
  145.          this.button[var10].setMnemonic(var3[var10].charAt(0));
  146.       }
  147.  
  148.       ((JDialog)this).getContentPane().setLayout(new BorderLayout());
  149.       this.art = new JLabel(var1);
  150.       this.message.setFont(var5);
  151.       this.message.setBackground(((JDialog)this).getContentPane().getBackground());
  152.       this.message.setText(var2);
  153.       this.message.setBorder(BorderFactory.createEmptyBorder(8, 8, 14, 8));
  154.       ((JDialog)this).getContentPane().add(this.message, "North");
  155.       JPanel var11 = new JPanel();
  156.       ((Container)var11).setLayout(new GridBagLayout());
  157.       GridBagConstraints var12 = new GridBagConstraints();
  158.       var12.insets = new Insets(8, 16, 0, 16);
  159.  
  160.       for(int var13 = 0; var13 < (var6 > 512 ? 512 : var6); ++var13) {
  161.          var12.fill = 0;
  162.          var12.anchor = 17;
  163.          var12.gridheight = 1;
  164.          if (this.options[var13] == null) {
  165.             var12.weightx = (double)5.0F;
  166.             var12.gridwidth = 0;
  167.          } else {
  168.             var12.weightx = (double)1.0F;
  169.             var12.gridwidth = -1;
  170.          }
  171.  
  172.          ((Container)var11).add(this.label[var13], var12);
  173.          if (this.options[var13] != null) {
  174.             var12.weightx = (double)4.0F;
  175.             var12.gridwidth = 0;
  176.             var12.fill = 2;
  177.             ((Container)var11).add(this.options[var13], var12);
  178.          }
  179.       }
  180.  
  181.       2 var14 = new 2((InstanceDocDialog)null, var11);
  182.       ((JScrollPane)var14).setViewportBorder(new EmptyBorder(0, 0, 8, 0));
  183.       ((JComponent)var14).setBorder(new CompoundBorder(new EmptyBorder(0, 8, 0, 8), ((JComponent)var14).getBorder()));
  184.       ((JDialog)this).getContentPane().add(var14, "Center");
  185.       JPanel var15 = new JPanel(new FlowLayout(2, 16, 12));
  186.  
  187.       for(int var16 = 0; var16 < this.button.length; ++var16) {
  188.          ((Container)var15).add(this.button[var16]);
  189.       }
  190.  
  191.       ((JDialog)this).getContentPane().add(var15, "South");
  192.       ((Window)this).pack();
  193.       Screen.centerInScreen(this);
  194.    }
  195.  
  196.    protected void doButton(int var1) {
  197.       this.dismissalBtn = var1;
  198.       if (this.dismissalBtn == 0) {
  199.          Vector var2 = this.getValues();
  200.          Debug.assert(var2.size() == this.declsToEdit.size(), "Declarations and their values don't match.");
  201.  
  202.          for(int var3 = 0; var3 < this.declsToEdit.size(); ++var3) {
  203.             BaseDeclaration var4 = (BaseDeclaration)this.declsToEdit.elementAt(var3);
  204.             String var5 = (String)var2.elementAt(var3);
  205.             if ((var4.getSampleData() != null || var5 != null) && (var4.getSampleData() == null || var5 == null || !var4.getSampleData().equals(var5))) {
  206.                var4.setSampleData(var5);
  207.             }
  208.          }
  209.       }
  210.  
  211.       ((Window)this).dispose();
  212.    }
  213.  
  214.    public void addNotify() {
  215.       super.addNotify();
  216.       if (this.options.length == 0) {
  217.          this.button[0].requestFocus();
  218.       }
  219.  
  220.       ((JDialog)this).getRootPane().requestFocus();
  221.       ((RDialog)this).installEscape(this.button[this.button.length - 1]);
  222.       ((RDialog)this).installDefault(this.button[0]);
  223.       int var1 = this.getTextFieldCount();
  224.  
  225.       while(true) {
  226.          --var1;
  227.          if (var1 < 0) {
  228.             return;
  229.          }
  230.  
  231.          if (this.getTextField(var1) != null) {
  232.             ((RDialog)this).installDefault(this.getTextField(var1));
  233.          }
  234.       }
  235.    }
  236.  
  237.    public boolean userCanceled() {
  238.       return this.getDismissalButton() == 1;
  239.    }
  240. }
  241.